#include <stdio.h>

//#include <string.h>

/*
int main()
{
    printf("file:%s line:%d date:%s time:%s stdc:%d", __FILE__, __LINE__, __DATE__, __TIME__, __STDC__);
    return 0;
}
*/
/*
#define MAX 1000
#define reg register           //为 register这个关键字，创建一个简短的名字
#define do_forever for(;;)     //用更形象的符号来替换一种实现
#define CASE break;case        //在写case语句的时候自动把 break写上。
// 如果定义的 stuff过长，可以分成几行写，除了最后一行外，每行的后面都加一个反斜杠(续行符)。
#define DEBUG_PRINT printf("file:%s\tline:%d\t \
                        date:%s\ttime:%s\n" ,\
                        __FILE__,__LINE__ ,\
                        __DATE__,__TIME__ )


int main()
{
    printf("%d\n", MAX);
    reg int m;

    return 0;
}
*/
/*
#define MAX 1000

int main()
{
    int arr[MAX];
    return 0;
}
*/

/*
#define SQUARE(x) (x)*(x)
int main()
{
    int a = 5;
    int ret = SQUARE(a + 1);
    printf("%d\n", ret);
    return 0;
}

*/

//#define DOUBLE(x) ((x) + (x))
/*
int main()
{
    int a = 5;
    printf("%d\n", 10 * DOUBLE(a));
    return 0;
}
*/

//在一个字符串中删除另一个字符串中出现的字符，并打印出来
/*
int is_exist(char* str, char ch)
{
    while(*str)
    {
        if(*str == ch)
        {
            return 1;
        }
        str++;
    }
    return 0;
}
int main()
{
    char str1[100] = {0};
    char str2[100] = {0};
    gets(str1);
    gets(str2);
    int i = 0;
    while(str1[i])
    {
        if(is_exist(str2, str1[i]) == 0)
        {
            printf("%c", str1[i]);
        }
        i++;
    }
	return 0;
}
*/
/*
#define PRINT(FORMAT, VALUE) printf("the value is "FORMAT"\n", VALUE)

int main()
{
	PRINT("%d", 10);
	return 0;
}
*/
/*
#define PRINT(FORMAT, VALUE) printf("the value of " #VALUE "is "FORMAT "\n", VALUE);

int main()
{
    int i = 10;
    PRINT("%d", i+3);
    return 0;
}
*/
/*
int sum5 = 20;
#define ADD_TO_SUM(num, value) sum##num += value
int main()
{
    ADD_TO_SUM(5, 10);
    return 0;
}
*/

/*
int Class109 = 2023;
#define CAT(x, y) x##y
int main()
{
    printf("%d\n", CAT(Class, 109));
    return 0;
}
*/

/*
#define MAX(a, b) ((a) > (b) ? (a) : (b))
int main()
{
    int x = 5;
    int y = 8;
    int z = MAX(x++, y++);
    printf("x=%d, y=%d, z=%d\n", x, y, z);
    return 0;
}
*/

// #define MALLOC(num, type) (type*)malloc(num * sizeof(type))

// int main()
// {
//     int* p = MALLOC(10, int);
//     return 0;
// }

// #define MAX 10

// int main()
// {
//     printf("%d\n", MAX);
// #undef MAX
    
//     printf("%d\n", MAX);

//     return 0;
// }

// int main()
// {
//     int arr[ARRAY_SIZE];
//     for(int i = 0;i<ARRAY_SIZE;i++)
//     {
//         arr[i] = i;
//     }
//     for(int i = 0;i<ARRAY_SIZE;i++)
//     {
//         printf("%d ", arr[i]);
//     }
//     printf("\n");
//     return 0;
// }


// #include <stdio.h>
// #define __DEBUG__

// int main()
// {
//     int i = 0;
//     int arr[10] = {0};
//     for(i=0; i<10; i++)
//     {
//         arr[i] = i;
//         #ifdef __DEBUG__
//         printf("%d\n", arr[i]);
//         #endif
//     }
//     return 0;
// }

// int main()
// {
//     #if 1 == 2
//     printf("%d ", 10);
//     #endif
//     return 0;
// }



// int main()
// {
//     #if 1 == 2
//         printf("haha\n");
//     #elif 2 == 2
//         printf("hehe\n");
//     #elif 3 == 4
//         printf("gege\n");
//     #else
//         printf("jiji\n");
//     #endif
//     return 0;
// }


// int main()
// {
//     //写法三
//     #ifndef MAX
//         printf("%d\n", MAX);
//     #endif

//     //写法四
//     #if !defined (MAX)
//         printf("%d\n", MAX);
//     #endif

//     return 0;
// }

#define OS_MSDOS 1
#define OPTION2 2
int main()
{
    #if defined(OS_UNIX)
        #ifdef OPTION1
            unix_version_option1();
        #endif
        #ifdef OPTION2
            unix_version_option2();
        #endif
    #elif defined(OS_MSDOS)
        #ifdef OPTION2
            msdos_version_option2();
        #endif
    #endif
    return 0;
}